home *** CD-ROM | disk | FTP | other *** search
- package symantec.itools.db.awt;
-
- import java.awt.Color;
- import java.awt.Event;
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.awt.Image;
- import java.awt.Rectangle;
- import java.awt.image.ImageObserver;
-
- public class ButtonCell implements TableCell, ImageObserver {
- Grid view;
- DataSource dataSource;
- Coordinate coords;
- boolean pressed;
- boolean drawUp = true;
- boolean defaultFlag;
- int type;
- static final int PADSIDES = 5;
-
- ButtonCell() {
- }
-
- public ButtonCell(Grid var1, DataSource var2) {
- this.view = var1;
- this.dataSource = var2;
- }
-
- public ButtonCell(int var1, int var2) {
- this.coords = new Coordinate(var1 - 1, var2 - 1);
- }
-
- public int type() {
- return this.type;
- }
-
- public int type(int var1) {
- if (var1 <= 3 && var1 >= 0) {
- return this.type = var1;
- } else {
- throw new IllegalArgumentException("Invalid cell type");
- }
- }
-
- public TableCell cloneCell() {
- ButtonCell var1 = new ButtonCell(this.view, this.dataSource);
- if (this.coords != null) {
- var1.coords = new Coordinate(this.coords);
- }
-
- var1.type = this.type;
- var1.defaultFlag = this.defaultFlag;
- return var1;
- }
-
- public void setGrid(Grid var1, DataSource var2) {
- this.view = var1;
- this.dataSource = var2;
- }
-
- public void setDefaultFlag() {
- this.defaultFlag = true;
- }
-
- public void reset() {
- this.pressed = false;
- this.drawUp = true;
- }
-
- public void setCoordinates(Coordinate var1) {
- this.coords = var1;
- }
-
- public Coordinate getCoordinates() {
- return this.coords;
- }
-
- public int row() {
- return this.coords.row;
- }
-
- public void setRow(int var1) {
- this.coords.row = var1;
- }
-
- public int col() {
- return this.coords.col;
- }
-
- public void setCol(int var1) {
- this.coords.col = var1;
- }
-
- boolean inside(int var1, int var2) {
- Rectangle var3 = this.view.getCellBounds(this);
- return var1 > 0 && var2 > 0 && var1 < var3.width && var2 < var3.height;
- }
-
- public boolean mouseEvent(Event var1) {
- if (var1.id == 501) {
- this.view.setCapture(this);
- this.pressed = true;
- this.drawUp = false;
- this.view.generateEvent(var1, 50, this);
- this.view.redrawCell(this);
- } else if (var1.id == 506) {
- if (this.inside(var1.x, var1.y) && this.drawUp) {
- this.drawUp = false;
- this.view.generateEvent(var1, 52, this);
- this.view.redrawCell(this);
- } else if (!this.inside(var1.x, var1.y) && !this.drawUp) {
- this.drawUp = true;
- this.view.generateEvent(var1, 53, this);
- this.view.redrawCell(this);
- }
- } else if (var1.id == 502) {
- if (this.pressed && !this.drawUp) {
- this.view.generateEvent(var1, 51, this);
- }
-
- this.pressed = false;
- this.drawUp = true;
- this.view.redrawCell(this);
- this.view.lostCapture();
- }
-
- return true;
- }
-
- public Data getData() throws DataNotAvailable {
- return this.dataSource.getData(this.coords);
- }
-
- String chopString(String var1, FontMetrics var2, Rectangle var3) {
- int var4 = var3.width;
- int var5 = 1;
- if (var1.length() == 0) {
- return var1;
- } else {
- String var6;
- do {
- var6 = var1.substring(0, var5);
- } while(var2.stringWidth(var6) < var4 - 10 && var5++ < var1.length());
-
- return var1.substring(0, var5 - 1);
- }
- }
-
- public void drawCell(Graphics var1, CellHints var2) {
- Object var3;
- try {
- var3 = this.getData();
- } catch (DataNotAvailable var11) {
- var3 = new ImageStringData(this.dataSource, "");
- }
-
- Rectangle var4 = var2.bounds();
- FontMetrics var5 = var1.getFontMetrics();
- var5.getAscent();
- String var6 = this.chopString(((Data)var3).toString(), var5, var4);
- int var7 = var5.stringWidth(var6);
- int var8 = 0;
- var1.getColor();
- int var9 = var4.x;
- this.drawButton(var1, var4);
- Image var10 = ((Data)var3).toImage();
- switch (var2.alignment()) {
- case 0:
- if (var10 != null) {
- var8 = var10.getWidth(this) + 5;
- }
-
- if (var8 + var7 + 2 + 5 <= var4.width && var10 != null) {
- var4.x += 5;
- var4.y += 3;
- var1.drawImage(var10, var4.x, var4.y, this);
- var4.y -= 3;
- } else {
- var8 = 5;
- }
-
- var4.x = var9 + var8 + 2;
- break;
- case 1:
- var4.x = var9 + (var4.width - var7) / 2;
- break;
- case 2:
- if (var10 != null) {
- var8 = var10.getWidth(this) + 5;
- }
-
- if (var7 + var8 + 2 + 5 <= var4.width && var10 != null) {
- var4.x = var4.x + var4.width - var7 - 5 - var8 - 2;
- var4.y += 3;
- var1.drawImage(var10, var4.x, var4.y, this);
- var4.y -= 3;
- }
-
- var4.x = var9 + var4.width - var7 - 5;
- }
-
- var1.setColor(var2.foreground());
- var1.drawString(var6, var4.x, var4.y + var5.getAscent() + 2);
- }
-
- void drawButton(Graphics var1, Rectangle var2) {
- Color var3 = Color.lightGray;
- var1.setColor(var3);
- var1.fillRect(var2.x, var2.y, var2.width - 1, var2.height);
- var1.setColor(Color.gray);
- var1.drawRect(var2.x + 1, var2.y + 1, var2.width - 3, var2.height - 3);
- var1.setColor(Color.black);
- var1.drawRect(var2.x, var2.y, var2.width - 1, var2.height - 1);
- if (this.drawUp) {
- var1.setColor(Color.white);
- var1.drawLine(var2.x + 1, var2.y + 1, var2.x + var2.width - 2, var2.y + 1);
- var1.drawLine(var2.x + 1, var2.y + 1, var2.x + 1, var2.y + var2.height - 2);
- } else {
- var1.setColor(Color.white);
- var1.drawLine(var2.x + 1, var2.y + var2.height - 2, var2.x + var2.width - 2, var2.y + var2.height - 2);
- var1.drawLine(var2.x + var2.width - 2, var2.y + 1, var2.x + var2.width - 2, var2.y + var2.height - 3);
- }
- }
-
- public boolean isCellTypeEditable() {
- return false;
- }
-
- public boolean actionEvent(Event var1) {
- return true;
- }
-
- public boolean keyEvent(Event var1) {
- return true;
- }
-
- public boolean canLoseFocus() {
- return true;
- }
-
- public boolean focusEvent(Event var1) {
- if (var1.id == 1004) {
- this.view.setCapture(this);
- this.view.generateEvent(var1, 55, this);
- } else {
- this.view.lostCapture();
- this.view.generateEvent(var1, 56, this);
- }
-
- return true;
- }
-
- public boolean loseFocusOnArrow() {
- return false;
- }
-
- public void activateCursor() {
- }
-
- public void deactivateCursor() {
- }
-
- public String stats() {
- return "";
- }
-
- public boolean imageUpdate(Image var1, int var2, int var3, int var4, int var5, int var6) {
- if ((var2 & 192) != 0) {
- return false;
- } else if ((var2 & 32) != 0) {
- this.view.redrawAsync();
- return false;
- } else {
- return true;
- }
- }
- }
-